home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Audio, Video & Photo / MediaCoder 0.6.2.4200 / MediaCoder-0.6.2.4200.exe / extensions / _include / extension.js < prev    next >
Text File  |  2008-02-20  |  5KB  |  284 lines

  1. /******************************************************************
  2. * MediaCoder extension base scripts
  3. * Distributed under GPL license
  4. * Copyright (c) 2007 Stanley Huang <stanleyhuangyc@gmail.com>
  5. * All rights reserved.
  6. ******************************************************************/
  7.  
  8. var xmlhttp = CreateXMLHttp();
  9. var debug;
  10. if (GetToken(document.location.href, "debug")) {
  11.     debug = true;
  12. } else {
  13.     debug = false;
  14. }
  15.  
  16. function CreateXMLHttp()
  17. {
  18.     var newxmlhttp = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
  19.     if (!newxmlhttp) alert("XMLHttpRequest object cannot be created.");
  20.     return newxmlhttp;
  21. }
  22.  
  23. function NewXML(rootkey)
  24. {
  25.     var xmlDoc;
  26.     if (document.implementation && document.implementation.createDocument)
  27.     {
  28.         xmlDoc = document.implementation.createDocument("", rootkey, null);
  29.     }
  30.     else if (window.ActiveXObject)
  31.     {
  32.         xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  33.      }
  34.     else
  35.     {
  36.         return;
  37.     }
  38.     return xmlDoc;
  39. }
  40.  
  41. function LoadXMLFile(xmlfile)
  42. {
  43.     var xmlDoc;
  44.     if (document.implementation && document.implementation.createDocument)
  45.     {
  46.         xmlDoc = document.implementation.createDocument("", "", null);
  47.         //xmlDoc.onload = callback;
  48.     }
  49.     else if (window.ActiveXObject)
  50.     {
  51.         xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  52.         xmlDoc.onreadystatechange = function () {
  53.             //if (xmlDoc.readyState == 4) callback()
  54.         };
  55.      }
  56.     else
  57.     {
  58.         return;
  59.     }
  60.     xmlDoc.async = false;
  61.     try { 
  62.         if (!xmlDoc.load(xmlfile)) return null;
  63.     }
  64.     catch (ex)
  65.     {
  66.         return null;
  67.     }
  68.     return xmlDoc;
  69. }
  70.  
  71. function AddPrefNode(doc, path, value)
  72. {
  73.     var i;
  74.     var tokens = path.split('.');
  75.     var node = doc.firstChild;
  76.     var newnode;
  77.     for (i = 0; i < tokens.length; i++) {
  78.         newnode = doc.createElement("node");
  79.         newnode.setAttribute("key", tokens[i]);
  80.         node = node.appendChild(newnode);
  81.     }
  82.     node.setAttribute("value", value);
  83. }
  84.  
  85. function AddPrefElements(doc, arrayElements)
  86. {
  87.     var i;
  88.     for (i = 0; i < arrayValues.length; i+=2) {
  89.         AddPrefNode(doc, arrayValues[i], arrayValues[i+1]);
  90.     }
  91. }
  92.  
  93. function AddPrefValues(doc, arrayValues)
  94. {
  95.     var i;
  96.     for (i = 0; i < arrayValues.length; i+=2) {
  97.         AddPrefNode(doc, arrayValues[i], arrayValues[i+1]);
  98.     }
  99. }
  100.  
  101. function AlertConnError()
  102. {
  103.     if (debug) alert("Error connecting to MediaCoder.");
  104. }
  105.  
  106. function PostData(url, data)
  107. {
  108.     try { 
  109.         xmlhttp.open("POST", url, true);
  110.         xmlhttp.send(data);
  111.     }
  112.     catch (ex) {
  113.         AlertConnError();
  114.     }
  115. }
  116.  
  117. function PostPrefXML(data)
  118. {
  119.     PostData("/prefs/import", data);
  120. }
  121.  
  122. function SendCommand(cmd)
  123. {
  124.     try { 
  125.         xmlhttp.open("GET", "/ui?cmd=" + cmd, false);
  126.         xmlhttp.send(null);
  127.     }
  128.     catch (ex) {
  129.         AlertConnError();
  130.     }
  131. }
  132.  
  133. function PlayVideo(hwnd)
  134. {
  135.     try { 
  136.         xmlhttp.open("GET", "/ui?cmd=play " + hwnd, false);
  137.         xmlhttp.send(null);
  138.     }
  139.     catch (ex) {
  140.         AlertConnError();
  141.     }
  142. }
  143.  
  144. function StopPlay()
  145. {
  146.     try { 
  147.         xmlhttp.open("GET", "/ui?cmd=stop_play " + hwnd, false);
  148.         xmlhttp.send(null);
  149.     }
  150.     catch (ex) {
  151.         AlertConnError();
  152.     }
  153. }
  154.  
  155. function PlayConvertedVideo(hwnd)
  156. {
  157.     try { 
  158.         xmlhttp.open("GET", "/ui?cmd=preview " + hwnd, false);
  159.         xmlhttp.send(null);
  160.     }
  161.     catch (ex) {
  162.         AlertConnError();
  163.     }
  164. }
  165.  
  166. function QueryString(url, async)
  167. {
  168.     try { 
  169.         xmlhttp.open("GET", url, async);
  170.         xmlhttp.send(null);
  171.         return xmlhttp.responseText;
  172.     }
  173.     catch (ex) {
  174.         AlertConnError();
  175.         return null;
  176.     }
  177. }
  178.  
  179. function QueryInfo(info)
  180. {
  181.     return QueryString("/mc/get?query=" + info, false);
  182. }
  183.  
  184. function QueryPref(path, opts)
  185. {
  186.     var node;
  187.     var requrl = "/prefs/prefs.xml?type&";
  188.     if (opts)
  189.         requrl += opts + "&";
  190.     if (path)
  191.         requrl += "path=" + path;
  192.     xmlhttp.open("GET", requrl, false);
  193.     xmlhttp.send(null);
  194.     node = xmlhttp.responseXML.firstChild;
  195.     if (!node) {
  196.         alert("Failed to retrieve preference data from MediaCoder.");
  197.         return null;
  198.     }
  199.     return getChildNode(node);
  200. }
  201.  
  202. function AddFile(filename)
  203. {
  204.     if (filename) {
  205.         xmlhttp.open("GET", "/queue?action=addfile&file=" + filename, false);
  206.         xmlhttp.send(null);
  207.     }
  208. }
  209.  
  210. function SetWindowSize(width, height)
  211. {
  212.     window.innerWidth = width;
  213.     window.innerHeight = height;
  214. }
  215.  
  216. function OpenURL(urlstring) {
  217.     xmlhttp.open('GET', '/openurl?url=' + urlstring, false);
  218.     xmlhttp.send(null);
  219. }
  220.  
  221. function ShowItem(id)
  222. {
  223.     var e = document.getElementById(id);
  224.     if (e) e.style.display = "block";
  225. }
  226.  
  227. function HideItem(id)
  228. {
  229.     var e = document.getElementById(id);
  230.     if (e) e.style.display = "none";
  231. }
  232.  
  233. function ValueOf(id)
  234. {
  235.     return document.getElementById(id).value;
  236. }
  237.  
  238. function GetToken(str, token)
  239. {
  240.     var idx = str.indexOf(token + '=');
  241.     if (idx < 0) return null;
  242.     var argstr = str.substring(idx + token.length + 1);
  243.     idx = argstr.indexOf('&');
  244.     return idx > 0 ? argstr.substring(0, idx) : argstr;
  245. }
  246.  
  247. function SetPrefValue(param, val)
  248. {
  249.     return callRPC("mc.SetPref", param, val);
  250. }
  251.  
  252. function GetPrefValue(param)
  253. {
  254.     return callRPC("mc.GetPref", param);
  255. }
  256.  
  257. function ShowCropper()
  258. {
  259.     return callRPC("ui.ShowTimeDialog");
  260. }
  261.  
  262. function ShowTimeDialog()
  263. {
  264.     return callRPC("ui.ShowTimeDialog");
  265. }
  266.  
  267. function ShowUI(shown)
  268. {
  269.     return callRPC("ui.Show", shown);
  270. }
  271.  
  272. function GetItem(index)
  273. {
  274.     return callRPC("mc.GetItem", index);
  275. }
  276.  
  277. function GetSelectedFile()
  278. {
  279.     var index = callRPC("ui.GetSelectIndex");
  280.     if (index < 0) return null;
  281.     var selitem = GetItem(index);
  282.     return selitem["filename"];
  283. }
  284.